Existing memory card interfaces efficiently hide the used memory technology. This can be beneficial from the host software implementation point of view because host software doesn't have to adapt to various memory technologies and architectures. However, this poses a problem that memory cards are not able to efficiently handle the wear leveling and pre-erase functions. For example, if the memory card is once written full, it will internally appear as full even if all the files that were stored in it will be deleted. The reason for this is that in a normal file system implementation, data will just be written to the memory card and new data will just overwrite the old one. Files are deleted only from the file allocation table by writing the reserved file/cluster entries to be non-reserved. In theory it is possible to erase a block of data from the memory card. However, this is not very useful since the erase is normally done in fairly large blocks, not on allocation unit granularity in which the file system operates.